{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "https://leetcode.com/problems/boats-to-save-people/\n",
    "\n",
    "\n",
    "Time Limit Exceeded\n",
    "\n",
    "\n",
    "```cpp\n",
    "#include <vector>\n",
    "#include <bits/stdc++.h>\n",
    "#include <algorithm>\n",
    "\n",
    "using namespace std;\n",
    "\n",
    "class Solution\n",
    "{\n",
    "public:\n",
    "    vector<int> used_index = {};\n",
    "    int numRescueBoats(vector<int> &people, int limit)\n",
    "    {\n",
    "        vector<int> arr = people;\n",
    "        sort(arr.begin(), arr.end(), greater<int>());\n",
    "\n",
    "        int boats = 0;\n",
    "        auto is_used = [=](int num) -> bool {\n",
    "            if (find(this->used_index.begin(), this->used_index.end(), num) != this->used_index.end())\n",
    "            {\n",
    "                return true;\n",
    "            }\n",
    "            else\n",
    "            {\n",
    "                return false;\n",
    "            }\n",
    "        };\n",
    "\n",
    "        int target = 0;\n",
    "        int length = arr.size();\n",
    "        for (int i = 0; i < length; ++i)\n",
    "        {\n",
    "            int e = arr[i];\n",
    "\n",
    "            if (is_used(i))\n",
    "            {\n",
    "                continue;\n",
    "            }\n",
    "\n",
    "            if (e <= limit)\n",
    "            {\n",
    "                this->used_index.push_back(i);\n",
    "                target = limit - e;\n",
    "\n",
    "                for (int j = i + 1; j < length; ++j)\n",
    "                {\n",
    "                    if (is_used(j))\n",
    "                    {\n",
    "                        continue;\n",
    "                    }\n",
    "\n",
    "                    e = arr[j];\n",
    "\n",
    "                    if (e <= target)\n",
    "                    {\n",
    "                        this->used_index.push_back(j);\n",
    "                        break;\n",
    "                    }\n",
    "                }\n",
    "\n",
    "                boats += 1;\n",
    "            }\n",
    "        }\n",
    "\n",
    "        return boats;\n",
    "    }\n",
    "};\n",
    "\n",
    "int main(int argc, char *argv[])\n",
    "{\n",
    "    auto s = Solution();\n",
    "    vector<int> people = {3, 2, 2, 1};\n",
    "    int limit = 3;\n",
    "    int r = s.numRescueBoats(people, limit);\n",
    "    cout << \"result: \" << r << endl;\n",
    "    return 0;\n",
    "}\n",
    "```"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "C++17",
   "language": "C++17",
   "name": "xcpp17"
  },
  "language_info": {
   "codemirror_mode": "text/x-c++src",
   "file_extension": ".cpp",
   "mimetype": "text/x-c++src",
   "name": "c++",
   "version": "17"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
